home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 January: Mac OS SDK / Dev.CD Jan 97 SDK1.toast / Development Kits (Disc 1) / QuickDraw 3D / Development / Interfaces / QD3DPascalInterfaces / QD3DPick.p < prev    next >
Encoding:
Text File  |  1996-11-15  |  7.3 KB  |  209 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        QD3DPick.p
  3.  
  4.      Contains:    Public picking routines                                         
  5.  
  6.      Version:    Technology:    Quickdraw 3D 1.0.6
  7.                  Release:    Universal Interfaces 2.1.5d1
  8.  
  9.      Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10.  
  11.      Bugs?:        If you find a problem with this file, send the file and version
  12.                  information (from above) and the problem description to:
  13.  
  14.                      Internet:    apple.bugs@applelink.apple.com
  15.                      AppleLink:    APPLE.BUGS
  16.  
  17. }
  18. {$IFC UNDEFINED UsingIncludes}
  19. {$SETC UsingIncludes := 0}
  20. {$ENDC}
  21.  
  22. {$IFC NOT UsingIncludes}
  23.  UNIT QD3DPick;
  24.  INTERFACE
  25. {$ENDC}
  26.  
  27. {$IFC UNDEFINED __QD3DPICK__}
  28. {$SETC __QD3DPICK__ := 1}
  29.  
  30. {$I+}
  31. {$SETC QD3DPickIncludes := UsingIncludes}
  32. {$SETC UsingIncludes := 1}
  33.  
  34. {$IFC UNDEFINED __QD3D__}
  35. {$I QD3D.p}
  36. {$ENDC}
  37. {$IFC UNDEFINED __QD3DSTYLE__}
  38. {$I QD3DStyle.p}
  39. {$ENDC}
  40. {$IFC UNDEFINED __QD3DGEOMETRY__}
  41. {$I QD3DGeometry.p}
  42. {$ENDC}
  43.  
  44. {$PUSH}
  45. {$ALIGN POWER}
  46. {$LibExport+}
  47.  
  48. {
  49. ****************************************************************************
  50.  **                                                                            **
  51.  **                            Mask bits for hit information                     **
  52.  **                                                                            **
  53.  ****************************************************************************
  54. }
  55.  
  56. TYPE
  57.     TQ3PickDetailMasks             = LONGINT;
  58. CONST
  59.     kQ3PickDetailNone            = {TQ3PickDetailMasks}0;
  60.     kQ3PickDetailMaskPickID        = {TQ3PickDetailMasks}$01;
  61.     kQ3PickDetailMaskPath        = {TQ3PickDetailMasks}$02;
  62.     kQ3PickDetailMaskObject        = {TQ3PickDetailMasks}$04;
  63.     kQ3PickDetailMaskLocalToWorldMatrix = {TQ3PickDetailMasks}$08;
  64.     kQ3PickDetailMaskXYZ        = {TQ3PickDetailMasks}$10;
  65.     kQ3PickDetailMaskDistance    = {TQ3PickDetailMasks}$20;
  66.     kQ3PickDetailMaskNormal        = {TQ3PickDetailMasks}$40;
  67.     kQ3PickDetailMaskShapePart    = {TQ3PickDetailMasks}$80;
  68.  
  69.  
  70. TYPE
  71.     TQ3PickDetail                        = LONGINT;
  72. {
  73. *****************************************************************************
  74.  **                                                                             **
  75.  **                                Hitlist sorting                                 **
  76.  **                                                                             **
  77.  ****************************************************************************
  78. }
  79.     TQ3PickSort                 = LONGINT;
  80. CONST
  81.     kQ3PickSortNone                = {TQ3PickSort}0;
  82.     kQ3PickSortNearToFar        = {TQ3PickSort}1;
  83.     kQ3PickSortFarToNear        = {TQ3PickSort}2;
  84.  
  85. {
  86. *****************************************************************************
  87.  **                                                                             **
  88.  **                    Data structures to set up the pick object                 **
  89.  **                                                                             **
  90.  ****************************************************************************
  91. }
  92.  
  93. TYPE
  94.     TQ3PickDataPtr = ^TQ3PickData;
  95.     TQ3PickData = RECORD
  96.         sort:                    TQ3PickSort;
  97.         mask:                    TQ3PickDetail;
  98.         numHitsToReturn:        LONGINT;
  99.     END;
  100.  
  101.     TQ3WindowPointPickDataPtr = ^TQ3WindowPointPickData;
  102.     TQ3WindowPointPickData = RECORD
  103.         data:                    TQ3PickData;
  104.         point:                    TQ3Point2D;
  105.         vertexTolerance:        Single;
  106.         edgeTolerance:            Single;
  107.     END;
  108.  
  109.     TQ3WindowRectPickDataPtr = ^TQ3WindowRectPickData;
  110.     TQ3WindowRectPickData = RECORD
  111.         data:                    TQ3PickData;
  112.         rect:                    TQ3Area;
  113.     END;
  114.  
  115. {
  116. *****************************************************************************
  117.  **                                                                             **
  118.  **                                    Hit data                                 **
  119.  **                                                                             **
  120.  ****************************************************************************
  121. }
  122.     TQ3HitPathPtr = ^TQ3HitPath;
  123.     TQ3HitPath = RECORD
  124.         rootGroup:                TQ3GroupObject;
  125.         depth:                    LONGINT;
  126.         positions:                TQ3GroupPositionPtr;
  127.     END;
  128.  
  129.     TQ3HitDataPtr = ^TQ3HitData;
  130.     TQ3HitData = RECORD
  131.         part:                    TQ3PickParts;
  132.         validMask:                TQ3PickDetail;
  133.         pickID:                    LONGINT;
  134.         path:                    TQ3HitPath;
  135.         object:                    TQ3Object;
  136.         localToWorldMatrix:        TQ3Matrix4x4;
  137.         xyzPoint:                TQ3Point3D;
  138.         distance:                Single;
  139.         normal:                    TQ3Vector3D;
  140.         shapePart:                TQ3ShapePartObject;
  141.     END;
  142.  
  143. {
  144. *****************************************************************************
  145.  **                                                                             **
  146.  **                                Pick class methods                             **
  147.  **                                                                             **
  148.  ****************************************************************************
  149. }
  150. FUNCTION Q3Pick_GetType(pick: TQ3PickObject): TQ3ObjectType; C;
  151. FUNCTION Q3Pick_GetData(pick: TQ3PickObject; VAR data: TQ3PickData): TQ3Status; C;
  152. FUNCTION Q3Pick_SetData(pick: TQ3PickObject; {CONST}VAR data: TQ3PickData): TQ3Status; C;
  153. FUNCTION Q3Pick_GetVertexTolerance(pick: TQ3PickObject; VAR vertexTolerance: Single): TQ3Status; C;
  154. FUNCTION Q3Pick_GetEdgeTolerance(pick: TQ3PickObject; VAR edgeTolerance: Single): TQ3Status; C;
  155. FUNCTION Q3Pick_SetVertexTolerance(pick: TQ3PickObject; vertexTolerance: Single): TQ3Status; C;
  156. FUNCTION Q3Pick_SetEdgeTolerance(pick: TQ3PickObject; edgeTolerance: Single): TQ3Status; C;
  157. FUNCTION Q3Pick_GetNumHits(pick: TQ3PickObject; VAR numHits: LONGINT): TQ3Status; C;
  158. FUNCTION Q3Pick_GetHitData(pick: TQ3PickObject; index: LONGINT; VAR hitData: TQ3HitData): TQ3Status; C;
  159. FUNCTION Q3Hit_EmptyData(VAR hitData: TQ3HitData): TQ3Status; C;
  160. FUNCTION Q3Pick_EmptyHitList(pick: TQ3PickObject): TQ3Status; C;
  161. {
  162. *****************************************************************************
  163.  **                                                                             **
  164.  **                            Window point pick methods                         **
  165.  **                                                                             **
  166.  ****************************************************************************
  167. }
  168. FUNCTION Q3WindowPointPick_New({CONST}VAR data: TQ3WindowPointPickData): TQ3PickObject; C;
  169. FUNCTION Q3WindowPointPick_GetPoint(pick: TQ3PickObject; VAR point: TQ3Point2D): TQ3Status; C;
  170. FUNCTION Q3WindowPointPick_SetPoint(pick: TQ3PickObject; {CONST}VAR point: TQ3Point2D): TQ3Status; C;
  171. FUNCTION Q3WindowPointPick_GetData(pick: TQ3PickObject; VAR data: TQ3WindowPointPickData): TQ3Status; C;
  172. FUNCTION Q3WindowPointPick_SetData(pick: TQ3PickObject; {CONST}VAR data: TQ3WindowPointPickData): TQ3Status; C;
  173. {
  174. *****************************************************************************
  175.  **                                                                             **
  176.  **                            Window rect pick methods                         **
  177.  **                                                                             **
  178.  ****************************************************************************
  179. }
  180. FUNCTION Q3WindowRectPick_New({CONST}VAR data: TQ3WindowRectPickData): TQ3PickObject; C;
  181. FUNCTION Q3WindowRectPick_GetRect(pick: TQ3PickObject; VAR rect: TQ3Area): TQ3Status; C;
  182. FUNCTION Q3WindowRectPick_SetRect(pick: TQ3PickObject; {CONST}VAR rect: TQ3Area): TQ3Status; C;
  183. FUNCTION Q3WindowRectPick_GetData(pick: TQ3PickObject; VAR data: TQ3WindowRectPickData): TQ3Status; C;
  184. FUNCTION Q3WindowRectPick_SetData(pick: TQ3PickObject; {CONST}VAR data: TQ3WindowRectPickData): TQ3Status; C;
  185. {
  186. *****************************************************************************
  187.  **                                                                             **
  188.  **                                Shape Part methods                             **
  189.  **                                                                             **
  190.  ****************************************************************************
  191. }
  192. FUNCTION Q3ShapePart_GetType(shapePartObject: TQ3ShapePartObject): TQ3ObjectType; C;
  193. FUNCTION Q3MeshPart_GetType(meshPartObject: TQ3MeshPartObject): TQ3ObjectType; C;
  194. FUNCTION Q3ShapePart_GetShape(shapePartObject: TQ3ShapePartObject; VAR shapeObject: TQ3ShapeObject): TQ3Status; C;
  195. FUNCTION Q3MeshPart_GetComponent(meshPartObject: TQ3MeshPartObject; VAR component: TQ3MeshComponent): TQ3Status; C;
  196. FUNCTION Q3MeshFacePart_GetFace(meshFacePartObject: TQ3MeshFacePartObject; VAR face: TQ3MeshFace): TQ3Status; C;
  197. FUNCTION Q3MeshEdgePart_GetEdge(meshEdgePartObject: TQ3MeshEdgePartObject; VAR edge: TQ3MeshEdge): TQ3Status; C;
  198. FUNCTION Q3MeshVertexPart_GetVertex(meshVertexPartObject: TQ3MeshVertexPartObject; VAR vertex: TQ3MeshVertex): TQ3Status; C;
  199. {$ALIGN RESET}
  200. {$POP}
  201.  
  202. {$SETC UsingIncludes := QD3DPickIncludes}
  203.  
  204. {$ENDC} {__QD3DPICK__}
  205.  
  206. {$IFC NOT UsingIncludes}
  207.  END.
  208. {$ENDC}
  209.